package com.iretailer.report.mapper;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.iretailer.report.base.SuperMapper;
import com.iretailer.report.dto.PhysicalCameraZone;
import com.iretailer.report.model.PhysicalZoneMall;
import com.iretailer.report.model.PhysicalZones;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Auther: xjw
 * @Date: 2019/1/21 13:11
 * @Description:
 */
public interface PhysicalZonesMapper extends SuperMapper<PhysicalZones> {

    /**
     * 查出所有的和CameraZone关联关系
     */
    List<PhysicalCameraZone> getAllPZCameraZone();

    /**
     * 根据 cameraZoneId 删除所有的关联
     */
    int deletePZCameraZoneByCameraZoneId(@Param("cameraZoneId") Integer cameraZoneId);

    /**
     * 根据 phyiscalZoneId 删除所有的关联
     */
    int deletePZCameraZoneByPhysicalZoneId(@Param("physicalZoneId") Integer physicalZoneId);

    /**
     * 批量的插入 physicalZone 和 CameraZone关联关系
     * Map 中的 可以为 CamerazoneId,PhysicalzonesId,reverse
     */
    int batchInsertPhysicalZonesCameraZone(@Param("param") List<PhysicalCameraZone> param);

    /**
     * zoneTypeId 为null 或者 '' 则查询全部
     * 返回中包含 mallName
     */
    List<PhysicalZoneMall> selectByZoneTypeId(@Param("zoneTypeId") String zoneTypeId);

    List<PhysicalZoneMall> selectByEnabled_MallId(@Param("enabled") Integer enabled, @Param("mallId") String mallId);


    /**
     * postMpa 包含
     * ids
     */
    List<PhysicalZoneMall> selectByIds(@Param("ids") List<String> postMap);

    List<PhysicalZones> selectPhysicalZonesByMallId(@Param("mallId") String mallId);

    /**
     * 用于 删除 cameraZone 的时候 检查 有没有被关联的
     */
    List<PhysicalZoneMall> selectPhysicalZonesByEnabled_CameraZoneId(@Param("enabled") Integer enabled, @Param("cameraZoneId") Long cameraZoneId);

    /**
     * 用于删除 device 的时候，检查 有没有被关联的
     */
    List<PhysicalZones> selectBy_deviceId(@Param("deviceId") String deviceId);

    /**
     * postMap 含有两部分
     * 1. mallIds
     * 2. zoneTypeId
     */
    List<PhysicalZoneMall> selectByMallIds_ZoneTypeId(@Param("mallIds") List<String> mallIds, @Param("zoneTypeId") String zoneTypeId);

    List<PhysicalZoneMall> selectByMallIds_ZoneTypeIds(@Param("mallIds") List<String> mallIds, @Param("zoneTypeIds") List<String> zoneTypeIds);

    IPage<PhysicalZoneMall> selectPagePhysicalZoneMall(Page page, @Param("ew") QueryWrapper queryWrapper);


    List<PhysicalZoneMall>  selectPhysicalZoneZoneType(@Param("enabled") Integer enabled, @Param("mallIds") List<String> mallIds);


    List<PhysicalZoneMall> selectPZZTByMallIdZoneTypeEnable(@Param("enabled") Integer enabled, @Param("mallIds") List<String> mallIds, @Param("zoneType") List<String> zoneType);
}
